package com.note.app.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.note.app.dto.NoteDTO;
import com.note.app.dto.ShareCreateDTO;
import com.note.app.dto.ShareDTO;

/**
 * 分享服务接口
 */
public interface ShareService {

    /**
     * 创建分享
     *
     * @param userId 用户ID
     * @param dto 创建分享DTO
     * @return 分享DTO，包含分享链接和令牌
     */
    ShareDTO createShare(Long userId, ShareCreateDTO dto);

    /**
     * 取消分享
     *
     * @param userId 用户ID
     * @param shareId 分享ID
     * @return 是否取消成功
     */
    boolean cancelShare(Long userId, Long shareId);

    /**
     * 根据令牌获取分享笔记
     *
     * @param token 分享令牌
     * @return 笔记详情
     */
    NoteDTO getNoteByShareToken(String token);

    /**
     * 分页查询用户创建的分享
     *
     * @param userId 用户ID
     * @param current 当前页
     * @param size 每页大小
     * @return 分享分页结果
     */
    Page<ShareDTO> getUserShares(Long userId, long current, long size);

    /**
     * 分页查询笔记的分享
     *
     * @param userId 用户ID
     * @param noteId 笔记ID
     * @param current 当前页
     * @param size 每页大小
     * @return 分享分页结果
     */
    Page<ShareDTO> getNoteShares(Long userId, Long noteId, long current, long size);

    /**
     * 检查分享权限
     *
     * @param token 分享令牌
     * @param requireWrite 是否需要写权限
     * @return 分享信息，无权限时返回null
     */
    ShareDTO checkSharePermission(String token, boolean requireWrite);
} 